package br.com.rampage.model.bo;

import java.util.Date;
import java.util.List;

import br.com.rampage.model.bean.Carteira;
import br.com.rampage.model.bean.Dependente;
import br.com.rampage.model.bean.Paciente;
import br.com.rampage.model.dao.DependenteDao;
import br.com.rampage.model.dao.FactoryDao;
import br.com.rampage.utils.ConstantsUtils;

public class DependenteBO {

	DependenteDao dao;
	public static boolean visualizarCarteira = false;
	
	public DependenteBO(){
		dao = FactoryDao.getDependente();
		
	}
	
	public Dependente carregar(Integer pk){
		
		return dao.buscarPorId(pk);
	}
	
	public void salver(Dependente p){
		dao.salvar(p);
		
	}
	
	public void excluir(Dependente p){
		
		dao.excluir(p);
	}
	
	public List<Dependente> listar(){
		
		return dao.listar();
	}

	public ReturnCallBack cadastrar(String nome, String sexo, String cpf, 
			String dataNascimento) {

			
			PacienteBO boPaciente = new PacienteBO();
			ReturnCallBack callBack = new ReturnCallBack();
			Paciente paciente = boPaciente.carregar(cpf);
			
			if(paciente !=null){
				
				Dependente dependete ;
				
				dependete = dao.buscarPorIdAndName(nome, cpf);
				
				if(dependete == null){
					
				dependete = new Dependente();
				Carteira carteira = new Carteira();
				CarteiraBO carteiraBO = new CarteiraBO();
				carteiraBO.cadastrar(carteira);
				dependete.setSexo(sexo);
				dependete.setNome(nome);
				dependete.setDataNascimento(new Date());
				dependete.setCarteira(carteira);
				dependete.getCarteira().setId(carteira.getId());
				dependete.setPaciente(paciente);
				
				dao.salvar(dependete);
				
				}else{
					callBack.setSucesso(false);
					callBack.setMsgReturn(ConstantsUtils.getInstace().CONSTANTS_ERRO_DEPEDENTE_EXISTE);
				}
				
			}else{
				
				callBack.setSucesso(false);
				callBack.setMsgReturn(ConstantsUtils.getInstace().CONSTANTS_ERRO_CPF_NAO_CADASTRADO);
			}
			
		return callBack;
	}

}
